The present invention is directed to communication systems and networks and is particularly directed toward sequential packet delivery and packet filtering in wireless transmission and communication systems.
In communications systems it is often desirable to guarantee in-order transmission of data, that is, to ensure that data elements transmitted from a source node are received at a destination node in the same order as the data elements were sent. In a communication system that supports a mechanism for queuing transmissions of data, but that also supports the retry of failed transmissions through manipulation and requeuing, in-order delivery presents additional complexities.
The Institute of Electrical and Electronic Engineers (IEEE) has established a wireless local area network (LAN) standard, 802.11. The IEEE 802.11 standard (IEEE 802.11) outlines Media Access Control (MAC) and Physical Layer (PHY) specifications for wireless LANs. The specification of the IEEE 802.11 addresses transmission of data in wireless LANs. The IEEE 802.11 specification requires in-order delivery so that a simple mechanism may be used to determine if duplicate data elements, such as data packets, are received at a given destination node. Sequential packet delivery is a critical aspect of IEEE 802.11 access points and stations. The IEEE 802.11 specification indicates that only one data packet intended for a particular receiver address may be queued at a time from a particular source address. That is, in-order delivery should be achieved by never queuing more than one data packet for a particular destination at a time. This prevents out-of-order delivery in the event that there is a failed transmission of a data packet.
FIG. 1 is a diagram illustrating an exemplary queue 100 of data packets 102-114 intended for transmission to a series of destinations A, B, and C. As an example of the reasoning behind the IEEE 802.11 restriction, assume that a data packet 102 intended for the destination A is queued mixed with data packets 104, 106, 114, 116 targeted for the destination B and with data packets 112, 116 for the destination C. Further assume that contrary to the IEEE 802.11 restriction, two or more data packets 102, 108, 110, 116 for destination A are interleaved with the data packets for the other destinations B and C. If multiple data packets are queued for destination A, then out of order delivery of data packets to destination A may occur if a failed transmission of the first data packet 102 occurs and transmission of data packets continues. Of course, transmission of data packets may be halted after a failed transmission so that any failed data packets can be manipulated and retransmitted. This practice is undesirable, however, because stopping data transmission to destination A also stops transmission to the other destinations, B and C, according to the example. It would be desirable to continue transmitting data packets for other destinations, in this case destinations B and C, even if a failed transmission of the first data packet for destination A occurs.
Meeting this restriction of the IEEE 802.11 specification, that is, one data packet per destination in the queue, would have a severe impact on system performance. For example, the time taken for the transmitter to recognize that a data packet has been successfully transmitted and to queue the next data packet for that destination will often exceed the time taken to exhaust the entire transmit queue.
Referring to FIG. 2, a typical IEEE 802.11 compliant device 200, such as an access point or a station, includes a transmitter 210, a memory 220, a local central processing unit (CPU) 230, and a bus interface unit (BIU) 240. The local CPU 230 transfers data packets from the BIU 240 into the memory 220. In addition, the CPU 230 queues data packets for the transmitter 210 so that the CPU 230 can control the order in which data packets are sent. The local CPU 230 has typically a low latency, meaning that to avoid severe impacts on performance, the CPU 230 may only queue the next packet for a particular destination once the previous packet is gone. Imagine a transmitter 210 that blindly sends all of the data packets that the CPU 230 queues for transmission. Then, if the CPU 230 queued at least two packets to the same destination, and a failed transmission of the first packet to the destination were to occur, then the transmitter might send the second packet to the destination before the device 200 could be notified that a failed transmission of the first packet occurred. If a failed transmission occurred, and if the second packet was subsequently successfully transmitted, then the destination node would of necessity receive the two packets out of order, thereby violating the in-order delivery requirement of IEEE 802.11.
Accordingly, it would be desirable to implement a system that maintains in-order delivery of packets to the same destination without sacrificing system performance.
It is therefore an object of the invention to overcome the above-described problems and challenges.
The present invention fulfills this object and others by providing in a first aspect of the present invention a transmission device to provide ordered transmission of data packets to a plurality of destinations. The transmission device includes a transmitter, a data packet ordering unit, a state table, and a transmit management interface coupled to the transmitter and to the data packet ordering unit. The state table stores a transmit block status of each destination. The transmit management interface analyzes data packets and determines whether to transmit a data packet targeted to a particular destination or to block transmission of data packets to the particular destination by examining the transmit block status of the particular destination from the state table.
A transmission device to provide ordered transmission of data packets to a plurality of destinations according to a presently preferred embodiment is presented in a second aspect of the present invention. The transmission device includes a transmitter, a data packet ordering unit, a state table, and a transmit management interface coupled to the transmitter. The state table stores a transmit block status of each destination. The transmit management interface blocks transmission of data packets to a first destination while permitting transmission of data packets to a second destination in accordance with the respective transmit block statuses of the first destination and the second destination from the state table.
A method of providing ordered transmission of data packets to a plurality of destinations according to a presently preferred embodiment is presented in a third aspect of the present invention. At least one data packet targeted to a first destination is queued together with at least one data packet targeted to at least one other destination. Whether or not to transmit a data packet in accordance with a destination transmit block status table and a change destination status code is determined. The destination transmit block status table indicates whether a particular destination has a transmit block. The change destination status code is stored in the data packet. The change destination status code indicates whether a transmit block at a particular destination should be maintained.
Another method of providing ordered transmission of data packets to a plurality of destinations according to a presently preferred embodiment is presented in a fourth aspect of the present invention. At least one data packet targeted to a first destination is queued together with at least one data packet targeted to at least one other destination. Further transmission of any data packets to the one destination in the event of a failed transmission of a first data packet targeted to the one destination is blocked. Transmission of at least one other data packet targeted to at least one other destination is permitted.
Yet another method of providing ordered transmission of data packets to a plurality of destinations according to a fifth aspect of the present invention is presented. A transmission queue is provided and updated. The transmission queue initially includes at least one data packet targeted to one destination together with at least one data packet targeted to at least one other destination. Further transmission of any data packets to the one destination in the event of a failed transmission of a first data packet targeted to the one destination is blocked. Transmission of at least one other data packet targeted to at least one other destination is permitted.